// https://blog.csdn.net/qq_38157825/article/details/132673833

const router = require('koa-router')()
const { PassThrough } = require('stream')

// 测试EventSource
router.get('/eventSource', async (ctx, next) => {
    try {
        const stream = new PassThrough()
        ctx.set({ 'Content-Type':'text/event-stream' })
        // 将歌词变成一个数组
        let song = [
            '我', '懒', '得', '写', '你', '谷', '搜', '到', '处', '皆', '只', '因', '你',
            '太', '美', '浅', '唱', '动', '人', '说', '不', '出', '我', '试', '着', 'end',
        ]
        let index = 0;
        setInterval(() => {
            const str = song[index];
            if (str) {
                // 方式1：格式是 data: xxx\n\n，事件要一对\n结束
                // stream.write(`data: ${song[index]}\n\n`)
                // 方式2,定义了event字段，自定义事件
                stream.write(`event: custom\ndata: ${song[index]}\n\n`)
                // 发送的数据为json字符串
                // stream.write(`event: custom\ndata: {"name": "${song[index]}"}\n\n`)
            } else {
                stream.write('0')
            }
            index++
        }, 500)

        ctx.body = stream
    } catch (error) {
        error.status = error.status ? error.status : 500
        ctx.throw(error.status, error)
    }
})
